#include <stdio.h>
#include "key_app.h"
#include "printf.h"

typedef unsigned char 	uint8_t;
typedef unsigned short  uint16_t;
typedef unsigned int 	uint32_t;

int main(int argc, char** argv) 
{
	uint16_t i;
	//定义按键信息 KeyInfo ={按键状态，按键序号}
	KeyInfo_t KeyInfo;
	//按键初始化，包括按键的FIFO，配置按键
	KeyInit();
	
	//测试程序
	for(i = 0; i < 500; i++)
	{
		#ifdef 	__PRINTF_H__
		user_data("%d ms, leval = %d \n", i*10,KeyStatus);
		#endif
		if(i < 10)
			KeyStatus = 0;
		else if(i< 15)
			KeyStatus = 1;		//按下50ms  没有超过门限50ms 不触发输出
		else if(i< 25)
			KeyStatus = 0;
		else if(i< 35)
			KeyStatus = 1;		//按下100ms  触发短按输出
		else if(i< 50)
			KeyStatus = 0;
		else if(i< 90)
			KeyStatus = 1;		//按下400ms  触发短按输出
		else if(i< 100)
			KeyStatus = 0;	
		else if(i< 450)
			KeyStatus = 1;		//按下3500ms  触发长按输出，超过3秒后每100ms后输出一次长按信号
		else
			KeyStatus = 0;
		
		//按键状态监测	
		KeyHandle();
		
		//判断发生按键时间，输出事件详情
		if(KeyInfoOutput(&KeyInfo))
		{
			#ifdef 	__PRINTF_H__
			switch(KeyInfo.Index)
			{
				case KEY_1:
					user_info("KEY1 ");
					break;
			}
			switch(KeyInfo.State)
			{
				case KEY_UP:
					user_info("KEY_UP\n");
					break;
				case KEY_DOWN:
					user_info("KEY_DOWN\n");
					break;
				case KEY_LONG:
					user_info("KEY_LONG\n");
					break;	
			}
			#endif
		}
	}
	
	return 0;
}

